#ifndef DEF_BOUTON
#define DEF_BOUTON

#include <iostream>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <SDL/SDL_ttf.h>

#define EX_FOND_BOUTON
typedef struct{
	SDL_Surface *image;
	int largeurDroite;//la taille de l'image qui va representer la partie droite
	int largeurGauche;//la taille de la partie gauche qui va representer la partie gauche
}FondBouton;

class Bouton
{
public:
	//bouton avec le texte
	Bouton(char texteN[],char *police);
	//bouton avec le texte et la taille de la police
	Bouton(char texteN[], char *police , int s);
	//bouton pour lequel on indique une image de fond
	Bouton(char texteB[] , char *police ,  FondBouton * fond ,  FondBouton *fondin);
	//bouton pour lequel on indique la taille de la police
	Bouton(char texteB[] , char *police ,  int s , FondBouton *fond ,  FondBouton *fondin );
	//destructeur du bouton
	~Bouton();
	//afficher le bouton sur l'ecran
	void afficher(SDL_Surface *ecran,int x , int y,SDL_Event event);
	//fonctino qui retourne vrai si le bouton est cliquer lors du dernier affichage
	bool isClicked();
	//largeur du bouton
	int w();
	//hauteur du bouton
	int h();
	//changer le texte du bouton
	void setTexte(char* txt);

	void setClick(bool i);

	void setColorIn(SDL_Color in );

	void setColorOut(SDL_Color out);

	static SDL_Cursor * init_system_cursor(const char *image[]);

    void setFondIn(FondBouton * fond);
    void setFondOut(FondBouton * fond);

private:
    void initText();
	void init();

	int size;
	char *texte;
	char *police;
	bool click;
	
	SDL_Surface *texteAfficher;
    SDL_Surface *textIn;
    SDL_Surface *textOut;

    TTF_Font *policeTTF;

	SDL_Color out;
	SDL_Color in;

    SDL_Surface *SurfacefondIn;
    SDL_Surface *SurfacefondOut;
    SDL_Surface *SurfacefondAct;
};

#endif

